package com.panfeng.xcloud.boss.provider.assets.service;

import com.panfeng.xcloud.boss.provider.assets.dto.request.*;
import com.panfeng.xcloud.boss.provider.assets.dto.response.*;
import com.panfeng.xcloud.boss.provider.assets.web.vo.response.UserQuantBotRespVO;
import com.panfeng.xcloud.boss.provider.dto.request.BatchOperateBotReqDTO;
import com.panfeng.xcloud.boss.provider.dto.request.OperateBotReqDTO;

import java.util.List;


public interface IUserQuantOperateService {

    /**
     * 操作--开仓,清仓,锁仓,解锁,停止机器人
     *
     * @param operateBotReqDTO
     */
    OperateBotRespDTO operateBot(OperateBotReqDTO operateBotReqDTO);

    /**
     * 批量操作--开仓,清仓,锁仓,解锁,停止机器人
     *
     * @param batchOperateBotReqDTO
     */
    BatchOperateBotRespDTO batchOperateBot(BatchOperateBotReqDTO batchOperateBotReqDTO);

    /**
     * 更新币种交易设置
     *
     * @param updateStrategyReqDTO
     * @return
     */
    UpdateStrategyRespDTO updateStrategy(UpdateStrategyReqDTO updateStrategyReqDTO);

    /**
     * 批量更新交易设置
     *
     * @param batchUpdateStrategyReqDTO
     * @return
     */
    BatchUpdateStrategyRespDTO batchUpdateStrategy(BatchUpdateStrategyReqDTO batchUpdateStrategyReqDTO);

    /**
     * 查询币种交易设置
     *
     * @param queryStrategyReqDTO
     * @return
     */
    QueryStrategyRespDTO queryStrategy(QueryStrategyReqDTO queryStrategyReqDTO);

    /**
     * 获取已开启量化的交易对列表
     *
     * @param openQuantBotReqDTO
     * @return
     */
    UserQuantBotRespVO getOpeningQuantBotList(OpenQuantBotReqDTO openQuantBotReqDTO);

    /**
     * 获取已开启量化的交易对详情
     *
     * @param openQuantBotDetailReqDTO
     * @return
     */
    OpenQuantBotDetailRespDTO getOpeningQuantBotDetail(OpenQuantBotDetailReqDTO openQuantBotDetailReqDTO);

    /**
     * 获取全部的交易对列表
     *
     * @param getSysOpeningQuantBotListReqDTO
     * @return
     */
    List<GetSysOpeningQuantBotListRespDTO> getSysOpeningQuantBotList(GetSysOpeningQuantBotListReqDTO getSysOpeningQuantBotListReqDTO);

    /**
     * 设置当前止损次数
     *
     * @param setStopLossNumReqDTO
     * @return
     */
    SetStopLossNumRespDTO setStopLossNum(SetStopLossNumReqDTO setStopLossNumReqDTO);

    GetSmallestInitOrderPositionRespDTO getSmallestInitOrderPosition(GetSmallestInitOrderPositionReqDTO getSmallestInitOrderPositionReqDTO);

    /**
     * 管理员更新币种交易设置
     *
     * @param updateStrategyByAdminReqDTO
     * @return
     */
    UpdateStrategyByAdminRespDTO updateStrategyByAdmin(UpdateStrategyByAdminReqDTO updateStrategyByAdminReqDTO);

}
